package cn.tedu.oop2;

public class TestStatic3 {
    public static void main(String[] args) {
        //5.创建对象进行测试
        Person p=new Person();
        Person p2=new Person();
        p.paly();
    }
}
//1.创建Person类
class Person{
    //7.添加本类的无参构造
    public Person(){
        System.out.println("我是一个无参构造");
    }
    //6.创建静态代码块
    /**静态代码块static{}
     * 1.位置：类里方法外
     * 2.执行时机：静态代码块也属于静态资源，随着类的加载而加载，优先于对象加载
     *           并且静态资源只需要加载一次
     * 3.作用：用于加载那些需要第一时间就加载，并且只加载一次的资源，常用来初始化
     * 4.执行顺序：静态代码块[随着类加载仅一次]-->构造代码块-->构造方法[说明对象创建成功]-->普通方法-->局部代码块*/
    static{
        System.out.println("我是一个静态代码块！");
    }
    //2.创建构造代码块
    /**构造代码块
     * 1.位置：类里方法外
     * 2.执行时机：创建对象时执行，并且优先于构造方法执行
     * 3.作用：用于提取所有构造方法的共性功能*/
    {
        System.out.println("我是构造代码块");
    }
    //3.创建一个普通方法
    public void paly(){
        System.out.println("我是一个普通方法");
        //4.创建局部代码块
        /**局部代码块
         * 1.位置：方法里
         * 2.执行时机：当局部代码块所处的方法被调用时才会被执行
         * 3.作用：用于限制变量的作用范围*/
        {
            System.out.println("我是一个局部代码块");
        }
    }
}
